/**
 * Interfície que mostra els mètodes del servidor
 * Definirem tots els mètodes de negoci del subsistema de conexió
 * @author Grup TDP 1X4J
 */
package edu.uoc.tdp.common;

import edu.uoc.tdp.beans.conexio.Administrador;
import edu.uoc.tdp.beans.conexio.Estudiant;
import edu.uoc.tdp.beans.conexio.ResponsableEvents;
import edu.uoc.tdp.beans.conexio.Usuari;
import java.rmi.RemoteException;
import java.util.List;

public interface RemotConexioInterface extends java.rmi.Remote {

    /**
     * Retorna un Usuari a partir del seu Id Intern
     * @param Id identificador intern de l'usuari a consultar
     * @return Usuari
     * @exception RemoteException
     * @exception EOlympicsException
     * @exception EOlympicsExceptionConnexio
     */    
    Usuari getUsuari(int IdUsu) throws RemoteException, 
            EOlympicsException, EOlympicsExceptionConnexio;
    
    /**
     * Retorna un Usuari a partir del seu Identificador i contrassenya
     * @param pIdUsuari Identificador de l'usuari a consultar
     * @param pPwd Contrassenya de l'usuari a consultar
     * @return Usuari
     * @exception RemoteException
     * @exception EOlympicsException
     * @exception EOlympicsExceptionConnexio
     */    
    Usuari getUsuari(String pIdUsuari, String pPwd) throws RemoteException, 
            EOlympicsException, EOlympicsExceptionConnexio;
    
    /**
     * Retorna un Administrador a partir del seu Id
     * @param Id identificador de l'Administrador a consultar
     * @return Administrador
     * @exception RemoteException
     * @exception EOlympicsException
     * @exception EOlympicsExceptionConnexio
     */    
    Administrador getAdministrador(int IdAdm) throws RemoteException, 
            EOlympicsException, EOlympicsExceptionConnexio;
    
    /**
     * Retorna un Administrador a partir del seu Identificador i contrassenya
     * @param pIdAdmin Identificador de l'administrador a consultar
     * @param pPwd Contrassenya de l'administrador a consultar
     * @return Administrador
     * @exception RemoteException
     * @exception EOlympicsException
     * @exception EOlympicsExceptionConnexio
     */    
    Administrador getAdministrador(String pIdAdmin, String pPwd) throws RemoteException, 
            EOlympicsException, EOlympicsExceptionConnexio;
    
    /**
     * Retorna un Responsable d'events a partir del seu Id
     * @param Id identificador de l'Administrador a consultar
     * @return Administrador
     * @exception RemoteException
     * @exception EOlympicsException
     * @exception EOlympicsExceptionConnexio
     */    
    ResponsableEvents getResponsableEvents(int IdREv) throws RemoteException, 
            EOlympicsException, EOlympicsExceptionConnexio;
    
    /**
     * Retorna un Responsable d'Events a partir del seu Identificador i contrassenya
     * @param pIdRespEv Identificador del responsable d'events a consultar
     * @param pPwd Contrassenya del responsable d'events a consultar
     * @return ResponsableEvents
     * @exception RemoteException
     * @exception EOlympicsException
     * @exception EOlympicsExceptionConnexio
     */    
    ResponsableEvents getResponsableEvents(String pIdRespEv, String pPwd) throws RemoteException, 
            EOlympicsException, EOlympicsExceptionConnexio;
    
    /**
     * Retorna un Estudiant a partir del seu Id
     * @param Id identificador de l'estudiant a consultar
     * @return Estudiant
     * @exception RemoteException
     * @exception EOlympicsException
     * @exception EOlympicsExceptionConnexio
     */    
    Estudiant getEstudiant(int IdEst) throws RemoteException, 
            EOlympicsException, EOlympicsExceptionConnexio;
    
    /**
     * Retorna un Estudiant a partir del seu Identificador i contrassenya
     * @param pIdEst Identificador de l'Estudiant a consultar
     * @param pPwd Contrassenya de l'Estudiant a consultar
     * @return Estudiant
     * @exception RemoteException
     * @exception EOlympicsException
     * @exception EOlympicsExceptionConnexio
     */    
    Estudiant getEstudiant(String pIdEst, String pPwd) throws RemoteException, 
            EOlympicsException, EOlympicsExceptionConnexio;

    /**
     * Retorna una llista dels Usuaris registrats que estan o no de baixa
     *
     * @param nom Text de filtre pel nom d'usuari
     * @param cognoms Text de filtre pels cognoms de l'usuari
     * @param ident Text de filtre per l'identificador d'usuari
     * @return Llista d'Usuaris
     * @exception RemoteException
     * @exception EOlympicsException
     * @exception EOlympicsExceptionConnexio
     */
    List<Usuari> getLlistaUsuaris(String nom, String cognoms, String ident) throws RemoteException, 
            EOlympicsException, EOlympicsExceptionConnexio;
    
    /**
     * Canvia l'estat d'un usuari a Bloquejat
     * @param pIdIntern Identificador intern de l'usuari
     * @return true si l'actualització s'ha fet i guardat correctament
     * @exception RemoteException
     * @exception EOlympicsException
     * @exception EOlympicsExceptionConnexio
     */    
    public boolean setBloqueigUsuari(int pIdIntern) throws RemoteException, 
            EOlympicsException, EOlympicsExceptionConnexio;                    
    
    /**
     * Crea un Usuari Administrador
     * @param usu Dades de l'usuari Administrador a crear
     * @param idAdmin Identificador intern de l'administrador que crea l'administrador
     * @return true si l'alta de l'administrador s'ha fet i guardat correctament
     * @exception RemoteException
     * @exception EOlympicsException
     * @exception EOlympicsExceptionConnexio
     */    
    public boolean setAltaAdministrador(Usuari usu, int idAdmin) throws RemoteException, 
            EOlympicsException, EOlympicsExceptionConnexio;                    
    
    /**
     * Crea un Usuari Responsable d'events
     * @param usu Dades de l'usuari Responsable d'Events a crear
     * @param idAdmin Identificador intern de l'administrador que crea el Responsable d'events
     * @return true si l'alta del Responsable d'events s'ha fet i guardat correctament
     * @exception RemoteException
     * @exception EOlympicsException
     * @exception EOlympicsExceptionConnexio
     */    
    public boolean setAltaResponsableEvents(Usuari usu, int idAdmin) throws RemoteException, 
            EOlympicsException, EOlympicsExceptionConnexio;                    
    
    /**
     * Crea un Usuari Estudiant
     * @param usu Dades de l'usuari Estudiant a crear
     * @param nomUniversitat Nom de la Universitat a la que pertany l'usuari Estudiant
     * @param idAdmin Identificador intern de l'administrador que crea l'Estudiant
     * @return true si l'alta de l'Estudiant s'ha fet i guardat correctament
     * @exception RemoteException
     * @exception EOlympicsException
     * @exception EOlympicsExceptionConnexio
     */    
    public boolean setAltaEstudiant(Usuari usu, String nomUniversitat, int idAdmin) throws RemoteException, 
            EOlympicsException, EOlympicsExceptionConnexio;                    

    
    /**
     * Modifica les dades d'un Usuari
     * @param usu Dades de l'Usuari a modificar
     * @param idAdmin Identificador intern de l'administrador que ha modificat les dades de l'Usuari
     * @return true si la modificació de l'Usuari s'ha fet i guardat correctament
     * @exception RemoteException
     * @exception EOlympicsException
     * @exception EOlympicsExceptionConnexio
     */    
    public boolean setUpdateUsuari(Usuari usu, int idAdmin) throws RemoteException, 
            EOlympicsException, EOlympicsExceptionConnexio;
    
    /**
     * Modifica les dades d'un Usuari Estudiant
     * @param usu Dades de l'usuari Estudiant a modificar
     * @param nomUniversitat Nom de la Universitat a la que pertany l'usuari Estudiant
     * @param idAdmin Identificador intern de l'administrador que ha modificat les dades de l'Estudiant
     * @return true si la modificació de l'Estudiant s'ha fet i guardat correctament
     * @exception RemoteException
     * @exception EOlympicsException
     * @exception EOlympicsExceptionConnexio
     */    
    public boolean setUpdateEstudiant(Usuari usu, String nomUniversitat, int idAdmin) throws RemoteException, 
            EOlympicsException, EOlympicsExceptionConnexio;
    
    /**
     * Marca un usuari com a borrat
     * @param idInternUsuari Identificador intern de l'usuari
     * @param idAdmin Identificador intern de l'administrador que borra l'usuari
     * @return true si l'actualització d'usuari borrat s'ha fet i guardat correctament
     * @exception RemoteException
     * @exception EOlympicsException
     * @exception EOlympicsExceptionConnexio
     */    
    public boolean setBorratUsuari(int idInternUsuari, int idAdmin) throws RemoteException, 
            EOlympicsException, EOlympicsExceptionConnexio;                    
    
    
    /**
     * Revisa si un document identificatiu el té un altre usuari diferent del testejat
     * @param document Document a comprovar
     * @param IdUsu Identificador de l'usuari que no s'ha de tenir en compte en el test
     * @return true si s'ha trobat un altre usuari amb aquest document.
     * @exception RemoteException
     * @exception EOlympicsException
     * @exception EOlympicsExceptionConnexio
     */
    public boolean esDocumentRepetit(String document, int IdUsu) throws RemoteException,
            EOlympicsException, EOlympicsExceptionConnexio;
    
    /**
     * Revisa si un identificador usuari el té un altre diferent del testejat
     * @param idUsuari Identificador usuari a comprovar
     * @param IdIntUsu Identificador de l'usuari que no s'ha de tenir en compte en el test
     * @return true si s'ha trobat un altre usuari amb aquest identificador.
     * @exception RemoteException
     * @exception EOlympicsException
     * @exception EOlympicsExceptionConnexio
     */
    public boolean esIdentificadorRepetit(String idUsuari, int IdIntUsu) throws RemoteException,
            EOlympicsException, EOlympicsExceptionConnexio;
    
    
}